#ifndef __PCIE_TEST_H__
#define __PCIE_TEST_H__
#include <stdint.h>

/* PCIe 设备信息结构体 */
struct pcie_device_info {
    char address[16];       /* 设备地址 (如 "0000:01:00.0") */
    uint16_t vendor_id;     /* 厂商ID */
    uint16_t device_id;     /* 设备ID */
    char class_name[64];    /* 设备类别名称 */
};

/* PCIe 内存映射上下文结构体 */
struct pcie_mem_ctx {
    int fd;                 /* /dev/mem 的文件描述符 */
    void *map_base;         /* 内存映射的基地址 */
    uint32_t phys_base;     /* 物理基地址 */
    size_t map_size;        /* 映射区域的大小 */
};

extern int enable_pcie_device(const char *device_address);
extern int disable_pcie_device(const char *device_address);
extern int is_pcie_device_enabled(const char *device_address);
extern int init_pcie_mem(struct pcie_mem_ctx *ctx, uint32_t phys_base, size_t map_size);
extern void cleanup_pcie_mem(struct pcie_mem_ctx *ctx);

#endif /* __PCIE_TEST_H__ */
